/*
 * @Description: 防抖与节流
 * @Author: Liu Kunpeng
 * @Date: 2021-11-09 19:46:36
 */

/*
*@Description: 防抖
*在一定时间内，不管触发多少次回调，都只认最后一次
*场景：resize场景，用户停止缩放时再去执行
*scroll事件
*/
export function debounce(fn, delay){
    let timer = null;
    return function(...args){
        clearTimeout(timer)
        timer = setTimeout(()=>{
            fn(...args)
        }, delay)
    }
}
/*
*@Description: 节流
*在一定时间内，不管出发多少次回调，都只认第一次，并在计时结束时给予响应
*每隔一段时间执行一次回调函数
*场景：用户边输入，边进行ajax请求
*页面scoll事件，长页面向下滑动时边滑动边请求图片
*/
export function throttle(fn, delay){
    let record = Date.now()
    return function(...args){
        const now = Date.now()
        const interval = now - record
        if (interval > delay) {
            fn(...args)
            record = Date.now()
        }
    }
}